home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Modules / scrap / scrapsupport.py < prev   
Text File  |  1996-04-12  |  2KB  |  61 lines

  1. # This script generates a Python interface for an Apple Macintosh Manager.
  2. # It uses the "bgen" package to generate C code.
  3. # The function specifications are generated by scanning the mamager's header file,
  4. # using the "scantools" package (customized for this particular manager).
  5.  
  6. # NOTE: the scrap include file is so bad that the bgen output has to be
  7. # massaged by hand.
  8.  
  9. import string
  10.  
  11. # Declarations that change for each manager
  12. MACHEADERFILE = 'Scrap.h'        # The Apple header file
  13. MODNAME = 'Scrap'                # The name of the module
  14.  
  15. # The following is *usually* unchanged but may still require tuning
  16. MODPREFIX = MODNAME            # The prefix for module-wide routines
  17. INPUTFILE = string.lower(MODPREFIX) + 'gen.py' # The file generated by the scanner
  18. OUTPUTFILE = '@' + MODNAME + "module.c"    # The file generated by this program
  19.  
  20. from macsupport import *
  21.  
  22. # Create the type objects
  23.  
  24. includestuff = includestuff + """
  25. #include <%s>""" % MACHEADERFILE + """
  26.  
  27. /*
  28. ** Generate ScrapInfo records
  29. */
  30. PyObject *SCRRec_New(itself)
  31.     ScrapStuff *itself;
  32. {
  33.  
  34.     return Py_BuildValue("lO&hhO&", itself->scrapSize,
  35.         ResObj_New, itself->scrapHandle, itself->scrapCount, itself->scrapState,
  36.         PyMac_BuildStr255, itself->scrapName;
  37. }
  38. """
  39.  
  40. ScrapStuffPtr = OpaqueType('ScrapStuff', 'SCRRec')
  41. putscrapbuffer = FixedInputBufferType('void *')
  42.  
  43. # Create the generator groups and link them
  44. module = MacModule(MODNAME, MODPREFIX, includestuff, finalstuff, initstuff)
  45.  
  46. # Create the generator classes used to populate the lists
  47. Function = OSErrFunctionGenerator
  48.  
  49. # Create and populate the lists
  50. functions = []
  51. execfile(INPUTFILE)
  52.  
  53. # add the populated lists to the generator groups
  54. # (in a different wordl the scan program would generate this)
  55. for f in functions: module.add(f)
  56.  
  57. # generate output (open the output file as late as possible)
  58. SetOutputFileName(OUTPUTFILE)
  59. module.generate()
  60.  
  61.